package com.mastercard.assets.web.struts.actions;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.mastercard.assets.jpa.TblAsset;
import com.mastercard.assets.jpa.TblCampania;
import com.mastercard.assets.jpa.TblCategoria;
import com.mastercard.assets.jpa.TblCuentaPaquete;
import com.mastercard.assets.jpa.TblFlujo;
import com.mastercard.assets.jpa.TblPaquete;
import com.mastercard.assets.jpa.TblSubcateg;
import com.mastercard.assets.jpa.TblTipoCampania;
import com.mastercard.assets.jpa.TblTipoCuenta;
import com.mastercard.assets.util.MCUtil;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.struts.forms.AlertasForm;
import com.mastercard.assets.web.struts.forms.AssetAltaForm;
import com.mastercard.assets.web.struts.forms.AssetAsignarPaquetesForm;
import com.mastercard.assets.web.struts.forms.AssetBorrarForm;
import com.mastercard.assets.web.struts.forms.AssetBuscarForm;
import com.mastercard.assets.web.struts.forms.AssetEditarForm;
import com.mastercard.assets.web.struts.forms.AssetModificarPaquetesForm;
import com.mastercard.assets.web.struts.forms.CampanasPorAutorizarForm;
import com.mastercard.assets.web.struts.forms.FlujosFForm;
import com.mastercard.assets.web.struts.forms.FormasForm;
import com.mastercard.assets.web.struts.forms.GenerarCampanaForm;
import com.mastercard.assets.web.struts.forms.GenerarCampanaRegistrarForm;
import com.mastercard.assets.web.struts.forms.LoginForm;
import com.mastercard.assets.web.struts.forms.TareasForm;
import com.mastercard.assets.web.struts.forms.TareasOperationForm;
import com.mastercard.assets.web.util.to.ManejadorPaquetesAsignados;
import com.mastercard.assets.web.util.to.PaqueteAutorizado;
import com.mastercard.assets.web.util.to.UserLogin;

public class TareasAgregarRegistrar
	extends
		Action
{
	public ActionForward execute(
							ActionMapping mapping , 
							ActionForm form ,
							HttpServletRequest request , 
							HttpServletResponse response )
		throws 
			IOException , 
			ServletException
	{
		HttpSession session = request.getSession( ) ;
		
		// en caos de null
		if( session == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma el userLogin
		UserLogin user = ( UserLogin ) session.getAttribute( "UserLogin" ) ;
		
		// en caso de null
		if( user == null )
			return mapping.findForward( "noLogin" ) ;
		
		TareasOperationForm f = ( TareasOperationForm ) form ;
		TareasOperationForm forma = null ;
		
		String email = f.getEmail( ) ;
		String dias = f.getDias( ) ;
		int cargar = f.getCargar( ) ;
		int tipoAlarma = f.getTipoAlarma( ) ;
		int tipoAlerta = f.getTipoAlerta( ) ;
		int cveNivel = f.getCveNivel( ) ;
		int cveAlerta = f.getCveAlerta( ) ;
		int cveFormaAlerta = f.getCveFormaAlerta( ) ;
		int cveTarea = f.getCveTarea( ) ;
		int cveFlujo = f.getCveFlujo( ) ;
		int cveRole = f.getCveRole( ) ;
		int cveSalida = f.getCveSalida( ) ;
		int cveAlarma = f.getCveAlarma( ) ;
		int operation = f.getOperation( ) ;
		
		System.out.println( "TareasAgregarRegistrar: " + operation ) ;
		
		TblFlujo flujo = null ;
		
		switch( operation )
		{
			// en caso de cargar niveles para agregar tarea
			case 1 :
				
				// dirige a TareasOperationIn
				user.setNextWorkArea( "/TareasOperationIn.do?cveTarea=" + cveTarea + "&operation=" + operation + "&cveFlujo=" + cveFlujo + "&cveRole=" + cveRole ) ;
				
				request.setAttribute( "TareasOperationForm" , f ) ;
				
				return mapping.findForward( "Carga" ) ;
				
			// en caso de querer registrar y despues de pasar por el filtro del form
			case 2 :
				
				// manda guardar la tarea
				try
				{
					int cveWork = MasterCardDAO.addNewWork( 
										f.getNombre( ) , 
										f.getDescripcion( ) , 
										f.getCveRole( ) , 
										f.getCveNivel( ) , 
										f.getCveForma( ) , 
										f.getCveFlujo( ) , 
										f.isFechaActivaDias( ) , 
										f.getActiveDateTimestamp( ) ,
										f.getFechaActivacionDiasI( ) ,
										f.getFechaActivacionDate( ) ,
										f.isFechaLimitDias( ) , 
										f.getLimitDateTimestamp( ) , 
										f.getFechaLimiteDiasI( ) ,
										f.getFechaLimiteDate( ) ,
                                                                                f.getMultiple( ) ,
                                                                                f.getMicroFlujo( ) ) ;
					
					System.out.println( "/TareasIndexIn.do?cveFlujo=" + f.getCveFlujo( ) ) ;
//					user.setNextWorkArea( "/TareasIndexIn.do?cveFlujo=" + f.getCveFlujo( ) ) ;
//					user.setNextWorkArea( "/FlujosFIndexIn.do?cveFlujo=" + cveFlujo + "&operation=4" ) ;
					user.setNextWorkArea( "/TareasOperationIn.do?cveFlujo=" + cveFlujo + "&operation=10&cveTarea=" + cveWork ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
				}catch( Exception e )
				{
					e.printStackTrace( ) ;
					user.setNextWorkArea( "/TareasOperationIn.do?cveTarea=" + cveTarea + "&operation=" + 1 + "&cveFlujo=" + cveFlujo ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
				}
				
			// en caso de cancelar la operacion de remover en la pantalla de confirmacion de remocion
			case 3 :
				
				forma = new TareasOperationForm( ) ;
				
				forma.setCveFlujo( cveFlujo ) ;
				forma.setOperation( 4 ) ;
				
				flujo = MasterCardDAO.findFlujoById( cveFlujo ) ;
				forma.setNombreFlujo( flujo.getNombre( ) ) ;
				
				request.setAttribute( "TareasOperationForm" , forma ) ;
				
				user.setNextWorkArea( "/TareasIndexIn.do?operation=" + 4 + "&cveFlujo=" + cveFlujo ) ;
				
                                MasterCardDAO.closeEntityManager( ) ;
				return mapping.findForward( "success" ) ;

			// en caso de confirmado la operacion de remover
			case 4:
				
				try
				{
					boolean res = MasterCardDAO.removeWork( f.getCveTarea( ) ) ;
					
					forma = new TareasOperationForm( ) ;
					
					forma.setCveFlujo( cveFlujo ) ;
					forma.setOperation( 4 ) ;
					
					request.setAttribute( "TareasOperationForm" , forma ) ;
					
					user.setNextWorkArea( "/TareasIndexIn.do?cveFlujo=" + cveFlujo + "&operation=" + 4 ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
				}catch( Exception e )
				{
					e.printStackTrace( ) ;
					
					forma = new TareasOperationForm( ) ;
					
					forma.setCveFlujo( cveFlujo ) ;
					forma.setOperation( 4 ) ;
					
					user.setMessageError( e.getMessage( ) ) ;
					
					request.setAttribute( "TareasOperationForm" , forma ) ;
					
					user.setNextWorkArea( "/TareasIndexIn.do?cveTarea=" + cveTarea + "&operation=" + 1 + "&cveFlujo=" + cveFlujo ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
				}
			
			// en caso de cancelar la operacion de editar
			case 5:
				
				forma = new TareasOperationForm( ) ;
				
				forma.setCveFlujo( cveFlujo ) ;
				forma.setOperation( 4 ) ;
				
				flujo = MasterCardDAO.findFlujoById( cveFlujo ) ;
				forma.setNombreFlujo( flujo.getNombre( ) ) ;
				
				request.setAttribute( "TareasOperationForm" , forma ) ;
				
				user.setNextWorkArea( "/TareasIndexIn.do?operation=" + 4 + "&cveFlujo=" + cveFlujo ) ;
				
                                MasterCardDAO.closeEntityManager( ) ;
				return mapping.findForward( "success" ) ;
				
			// en caso de confirmar la edicion
			case 6 :
				
				// manda guardar la tarea
				try
				{
					MasterCardDAO.editWork( 
							f.getCveTarea( ) , 
							f.getNombre( ) , 
							f.getDescripcion( ) , 
							f.getCveRole( ) , 
							f.getCveNivel( ) , 
							f.getCveForma( ) , 
							f.getCveFlujo( ) , 
							f.isFechaActivaDias( ) , 
							f.getActiveDateTimestamp( ) ,
							f.getFechaActivacionDiasI( ) ,
							f.getFechaActivacionDate( ) ,
							f.isFechaLimitDias( ) , 
							f.getLimitDateTimestamp( ) , 
							f.getFechaLimiteDiasI( ) ,
							f.getFechaLimiteDate( ) ,
                                                        f.getMultiple( ) ,
                                                        f.getMicroFlujo( ) ) ;                                                        
					
					System.out.println( "/TareasIndexIn.do?cveFlujo=" + f.getCveFlujo( ) ) ;
					user.setNextWorkArea( "/TareasIndexIn.do?cveFlujo=" + f.getCveFlujo( ) ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
				}catch( Exception e )
				{
					e.printStackTrace( ) ;
					user.setNextWorkArea( "/TareasOperationIn.do?cveTarea=" + cveTarea + "&operation=" + 1 + "&cveFlujo=" + cveFlujo ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
				}
			
			// en caso de cancelar la operacion de editar salidas
			case 7:
				
				forma = new TareasOperationForm( ) ;
				
				forma.setCveFlujo( cveFlujo ) ;
				forma.setOperation( 4 ) ;
				
				request.setAttribute( "TareasOperationForm" , forma ) ;
				
				user.setNextWorkArea( "/TareasIndexIn.do?operation=" + 4 + "&cveFlujo=" + cveFlujo ) ;
				
				return mapping.findForward( "success" ) ;
				
			
			// en caso de ir a formulario de alertas por salida de la tarea
			case 8:
				
				System.out.println( "/TareasOperationIn.do?operation=" + 5 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida ) ;
				user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 5 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole ) ;
				
				return mapping.findForward( "success" ) ;
				
			
			// en caso de ir a formulario de agregar alertas por salida de la tarea
			case 9 :
				
				System.out.println( "/TareasOperationIn.do?operation=" + 6 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email ) ;
				user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 6 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email ) ;
				
				return mapping.findForward( "success" ) ;
				
			// cancela la operacion de agregar una alerta
			case 10 :
				
				user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 5 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida ) ;
				                                
				return mapping.findForward( "success" ) ;
				
			// confirma la operacion de agregar alerta
			case 11 :
				
				try
				{
					MasterCardDAO.addNewAlertInExitWork( cveTarea , cveSalida , cveAlerta , cveRole , cveNivel , tipoAlerta , email ) ;
					
					user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 5 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
					
				}catch( Exception e )
				{
					user.setMessageError( e.getMessage( ) ) ;
					
					user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 5 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
				}
			
			// en caso de cargar niveles del formulario de editar alertas por salida de la tarea
			case 12 :
				
				System.out.println( "/TareasOperationIn.do?operation=" + 8 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta ) ;
				user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 8 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta + "&cargar=" + cargar ) ;
				
				return mapping.findForward( "success" ) ;
			
			// cancela la operacion de agregar una alerta
			case 13 :
				
				user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 5 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida ) ;
				
				return mapping.findForward( "success" ) ;
				
			// en caso de editar una forma alerta
			case 14 :
				
				System.out.println( "/TareasOperationIn.do?operation=" + 8 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta ) ;
				user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 8 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta + "&cargar=" + cargar ) ;
				
				return mapping.findForward( "success" ) ;
			
				
			// en caso de editar una forma alerta
			case 15 :
				
				
				try
				{
					MasterCardDAO.editAlertInExitWork( cveFormaAlerta , cveTarea , cveSalida , cveAlerta , cveRole , cveNivel , tipoAlerta , email ) ;
					
					user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 5 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
					
				}catch( Exception e )
				{
					user.setMessageError( e.getMessage( ) ) ;
					
					user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 5 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
				}
				
			// en caso de que quiera recargar niveles dentro de la pantalla de agregar alarma
			case 16 :
				
				System.out.println( "/TareasOperationIn.do?operation=" + 11 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta ) ;
				user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 11 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta + "&cargar=" + cargar + "&dias=" + dias + "&tipoAlarma=" + tipoAlarma ) ;
				
				return mapping.findForward( "success" ) ;
			
			// en caso de que cancele la operacion de agregar alarma
			case 17:
				
				System.out.println( "/TareasOperationIn.do?operation=" + 9 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta + "&cargar=" + cargar + "&dias=" + dias + "&tipoAlarma=" + tipoAlarma ) ;
				user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 9 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta + "&cargar=" + cargar + "&dias=" + dias + "&tipoAlarma=" + tipoAlarma ) ;
				
				return mapping.findForward( "success" ) ;
				
			// en caso de que agregue la alarma
			case 18 :
				
				try
				{
					MasterCardDAO.addNewAlarmInWork( cveTarea , cveAlerta , cveRole , cveNivel , tipoAlerta , email , tipoAlarma , f.getDiasI( ) , f.getHoras( ) ) ;
					
					user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 9 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
					
				}catch( Exception e )
				{
					user.setMessageError( e.getMessage( ) ) ;
					
					user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 9 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
				}
			
			// en caso de que agregue la alarma
			case 19 :
				
				user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 9 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida ) ;
				
				return mapping.findForward( "success" ) ;
					
				
			// en caso de que acepte borrar
			case 20 :
				
				try
				{
					boolean res = MasterCardDAO.eraseAlarmInWork( cveAlarma ) ;
					
					System.out.println( "/TareasOperationIn.do?operation=" + 9 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta + "&cargar=" + cargar + "&dias=" + dias + "&tipoAlarma=" + tipoAlarma ) ;
					user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 9 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta + "&cargar=" + cargar + "&dias=" + dias + "&tipoAlarma=" + tipoAlarma ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
					
				}catch( Exception e )
				{
                                    MasterCardDAO.closeEntityManager( ) ;
					user.setMessageError( e.getMessage( ) ) ;
					
					System.out.println( "/TareasOperationIn.do?operation=" + 9 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta + "&cargar=" + cargar + "&dias=" + dias + "&tipoAlarma=" + tipoAlarma ) ;
					user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 9 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta + "&cargar=" + cargar + "&dias=" + dias + "&tipoAlarma=" + tipoAlarma ) ;
					
					return mapping.findForward( "success" ) ;
					
				}
			
			// en caso de que quiera recargar niveles dentro de la pantalla de agregar alarma
			case 21 :
				
				System.out.println( "/TareasOperationIn.do?operation=" + 14 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta ) ;
				user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 14 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida + "&cveRole=" + cveRole + "&cveAlerta=" + cveAlerta + "&cveNivel=" + cveNivel + "&tipoAlerta=" + tipoAlerta + "&cveNivel=" + cveNivel + "&email=" + email + "&cveFormaAlerta=" + cveFormaAlerta + "&cargar=" + cargar + "&dias=" + dias + "&tipoAlarma=" + tipoAlarma + "&cveAlarma=" + cveAlarma ) ;
				
				return mapping.findForward( "success" ) ;
			
			// en caso de que confirme la edicion
			case 22 :
				
				try
				{
					System.out.println( "Edicion" ) ;
					
					MasterCardDAO.editAlarmInWork( cveAlarma , cveTarea , cveAlerta , cveRole , cveNivel , tipoAlerta , email , tipoAlarma , f.getDiasI( ) , f.getHoras( ) ) ;
					
					user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 9 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida ) ;
					
                                        MasterCardDAO.closeEntityManager( ) ;
					return mapping.findForward( "success" ) ;
					
				}catch( Exception e )
				{
                                    MasterCardDAO.closeEntityManager( ) ;
					user.setMessageError( e.getMessage( ) ) ;
					
					user.setNextWorkArea( "/TareasOperationIn.do?operation=" + 9 + "&cveFlujo=" + cveFlujo + "&cveTarea=" + cveTarea + "&cveSalida=" + cveSalida ) ;
					
					return mapping.findForward( "success" ) ;
				}
				
				
			// en caso de que confirme la edicion
			case 23 :
				
				System.out.println( "/TareasOperationIn.do?operation=4&cveTarea=" + cveTarea + "&cveFlujo=" + cveFlujo ) ;
				user.setNextWorkArea( "/TareasOperationIn.do?operation=4&cveTarea=" + cveTarea + "&cveFlujo=" + cveFlujo ) ;
				
				return mapping.findForward( "success" ) ;
				
			// en caso de cargar niveles para editar tarea
			case 24 :
				
				// dirige a TareasOperationIn
				user.setNextWorkArea( "/TareasOperationIn.do?cveTarea=" + cveTarea + "&operation=3&cveFlujo=" + cveFlujo + "&cveRole=" + cveRole ) ;
				
				request.setAttribute( "TareasOperationForm" , f ) ;
				
				return mapping.findForward( "Carga" ) ;
				
				// cualquier otra operacion
			default :
				break ;
		}
		
		user.setNextWorkArea( "/TareasOperationIn.do?cveTarea=" + cveTarea + "&operation=" + operation + "&cveFlujo=" + cveFlujo ) ;
		
                MasterCardDAO.closeEntityManager( ) ;
		return mapping.findForward( "success" ) ;
	}
	
}
